/**
 * 所有封装包的基础方法
 */
import cfg from '/cfg.js'


const $xwl = {
	log,
	isNull,
	isNotNull,
	checkNotNull,
	cfg,
	randomString,
	getUUID,
	toast,
}

uni.$xwl = $xwl




/**
 * @description 开发阶段输出信息(可以随时关闭输出)
 * @param {string} msg 要输出的消息
 */
function log(msg) {
	console.info(msg)
}

function toast(msg) {
	uni.showToast({
		title: msg,
		icon: 'none'
	})
}


/**
 * @description 判断是否空值,如果是空值,则返回true 
 * @param {string} val 要判断的数据
 */
function isNull(val) {
	var isNull = false
	if (typeof(val) === undefined)
		isNull = true
	if (val == null)
		isNull = true
	if (val == '')
		isNull = true
	if (JSON.stringify(val) === '{}')
		isNull = true
	return isNull
}

/**
 * @description 判断是否非空值,如果是非空值,则返回true 
 * @param {string} val 要判断的数据
 */
function isNotNull(val) {
	return !isNull(val)
}

/**
 * 检查是否非空,如果非空,返回True,否则返回false,并显示错误提示 
 * @param {string} val 要判断的数据
 * @param {string} msg 空的时候显示的错误提示
 */
function checkNotNull(val, msg) {
	if (isNull(val)) {
		alert.showError(msg)
		return false
	}
	return true
}

/**
 * @description 一次检查多个参数是否非空
 * <br/>有一个为空则返回false
 * <br/>返回false时,显示为空的错误提醒
 * @param {array} arr 要检查的数据描述
 * <br/>参数格式: [{val:'xxx',msg:'xxx'},...]
 */
function checkArrayNotNull(arr) {
	var isNotNull = true
	if (typeof(arr) === 'object') {
		for (let item of arr) {
			if (isNull(item.val)) {
				isNotNull = false
				alert.showError(item.msg)
				break
			}
		}
	} else {
		isNotNull = false
		alert.showError('参数不合法')
	}
	return isNotNull
}


/**
 * 生成随机字符串,用于生成随机密码等场景,默认长度为16位,也可以指定长度,最大长度为32位.
 * @param {string} length 数据长度,默认为16,最大为32,最小为16.
 */
function randomString(length = 16) {
	var result = '';
	var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
	for (var i = 0; i < length; i++) {
		var randomIndex = Math.floor(Math.random() * characters.length);
		result += characters.charAt(randomIndex);
	}
	return result;
}


/**
 * 生成唯一字符串
 * 
 */
function getUUID() {
	let s = [];
	let hexDigits = "0123456789abcdef";
	for (let i = 0; i < 36; i++) {
		s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
	}
	s[14] = "4";
	s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
	s[8] = s[13] = s[18] = s[23] = "-";

	let uuid = s.join("");
	return uuid.replace(/-/g, '');
}


export default {
	log,
	isNull,
	isNotNull,
	checkNotNull,
	checkArrayNotNull,
	randomString,
	getUUID,
	toast
}